/*
 * Planificador.h
 *
 *  Created on: 18/09/2011
 *      Author: utn_so
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <ifaddrs.h>
#include "Algoritmo.h"

#ifndef PLANIFICADOR_H_
#define PLANIFICADOR_H_

FILE* archDisco;
pthread_t HiloCola;

typedef struct  /// El NIPC en forma de struct
{
        char ID[16];   ///ID del mensaje
        char Tipo;   ///Tipo de mensaje (handshake, error, etc)
        int16_t Length; ///Largo del payload (Datos)
        int32_t Sector; //Sector involucrado en el pedido
        unsigned char* Datos;  ///Payload
} Paquete;


int IniciarSocketListen();
void RandomGG(char dst[16], int size);
int conectar(char* ip, int puerto);
void IniciarColas();
void* InicializarCola();
void IniciarDisco();
int EscribirSector(int32_t posicion,unsigned char* stream);
int32_t LeerSector(int32_t sector);
int32_t LeerSectorLlenar(int32_t sector,unsigned char datos[512]);
char* Serializar(Paquete *unPaquete);
Paquete* DesSerializar(char *unPaquete);
int sockRAID;
int32_t sockGral;
pthread_mutex_t mutexBuffer;
pthread_mutex_t mutexCabezal;
pthread_mutex_t mutexEncolar;


#endif /* PLANIFICADOR_H_ */
